/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.vista;

import co.com.going.logica.ILogicaPrograma;
import co.com.going.modelo.Programa;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Olguita
 */
@ManagedBean (name="VistaPrograma")
@RequestScoped
public class VistaPrograma {

    
    @EJB
    private ILogicaPrograma iLogicaPrograma;
    
    private InputText txtCodPrograma;
    private InputText txtNombrePrograma;
    private List<Programa> listaPrograma;
    private Programa programaSeleccionado;
    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    
    
    public VistaPrograma() {
    }

    public ILogicaPrograma getiLogicaPrograma() {
        return iLogicaPrograma;
    }

    public void setiLogicaPrograma(ILogicaPrograma iLogicaPrograma) {
        this.iLogicaPrograma = iLogicaPrograma;
    }

    public InputText getTxtCodPrograma() {
        return txtCodPrograma;
    }

    public void setTxtCodPrograma(InputText txtCodPrograma) {
        this.txtCodPrograma = txtCodPrograma;
    }

    public InputText getTxtNombrePrograma() {
        return txtNombrePrograma;
    }

    public void setTxtNombrePrograma(InputText txtNombrePrograma) {
        this.txtNombrePrograma = txtNombrePrograma;
    }

    public List<Programa> getListaPrograma() {
        
        try {
            listaPrograma=iLogicaPrograma.programas();
          
        } catch (Exception ex) {
            Logger.getLogger(VistaPrograma.class.getName()).log(Level.SEVERE, null, ex);
        }
         return listaPrograma;
    }

    public void setListaPrograma(List<Programa> listaPrograma) {
        this.listaPrograma = listaPrograma;
    }

    public Programa getProgramaSeleccionado() {
        return programaSeleccionado;
    }

    public void setProgramaSeleccionado(Programa programaSeleccionado) {
        this.programaSeleccionado = programaSeleccionado;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

        
    
    public void seleccionar_Programa(SelectEvent event){
        
        Programa programa= (Programa) event.getObject();
        txtCodPrograma.setValue(programa.getCodPrograma());
        txtNombrePrograma.setValue(programa.getNombrePrograma());
        txtCodPrograma.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnLimpiar.setDisabled(false);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        
        
    }
    
    
    public void funcion_Registrar(){
        
            try {
                Programa programa=new Programa();
                programa.setCodPrograma(Long.parseLong(txtCodPrograma.getValue().toString().trim()));
                programa.setNombrePrograma(txtNombrePrograma.getValue().toString().trim().toUpperCase());
                iLogicaPrograma.crearPrograma(programa);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("El Programa fue Creado con Exito"));
                funcion_Limpiar();

            } catch (Exception ex) {
                Logger.getLogger(VistaPrograma.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
            }

        }
    
    public void funcion_Modificar(){
        
            try {
                Programa programa=new Programa();
                programa.setCodPrograma(Long.parseLong(txtCodPrograma.getValue().toString().trim()));
                programa.setNombrePrograma(txtNombrePrograma.getValue().toString().trim().toUpperCase());
                iLogicaPrograma.modificarPrograma(programa);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("El Programa fue Modificado con Exito"));
                funcion_Limpiar();

            } catch (Exception ex) {
                Logger.getLogger(VistaPrograma.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
            }

        }
        
    
    
    public void funcion_Eliminar(){
        
        try {
            Programa programa=iLogicaPrograma.BuscarProgramaPorId(Long.parseLong(txtCodPrograma.getValue().toString()));
            iLogicaPrograma.eliminarPrograma(programa);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("El Programa Fue Eliminado con Exito"));
            funcion_Limpiar();
        } catch (Exception ex) {
            Logger.getLogger(VistaPrograma.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
        }
        
    }
    
    public void funcion_Limpiar(){
        
        txtCodPrograma.setValue("");
        txtNombrePrograma.setValue("");
        btnEliminar.setDisabled(true);
        btnRegistrar.setDisabled(false);
        btnModificar.setDisabled(true);
        txtCodPrograma.setDisabled(false);
        btnLimpiar.setDisabled(false);
        
        
    }
    
    
}
